package com.sojson.dao.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.sojson.base.impl.BaseDaoImpl;
import com.sojson.dao.RoleMenuDao;
import com.sojson.entity.po.RoleMenu;

/**
 * 角色和菜单关联表Dao实现类(目的:把分页插件从Service层分离,这样就不用每次调Dao接口都要分页)
 * 
 * @author liu
 * @date 2021-04-13
 */
@Repository
public class RoleMenuDaoImpl extends BaseDaoImpl<RoleMenuDao, RoleMenu> implements RoleMenuDao {

    @Resource
    private RoleMenuDao roleMenuDao;

    /**
     * 单条插入
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int insert(RoleMenu roleMenu) {
        return roleMenuDao.insert(roleMenu);
    }

    /**
     * 批量插入
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int insertList(List<RoleMenu> roleMenus) {
        return roleMenuDao.insertList(roleMenus);
    }

    /**
     * 通过对象批量删除(物理删除)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int deleteByDto(RoleMenu roleMenu) {
        return roleMenuDao.deleteByDto(roleMenu);
    }

    /**
     * 统计全部数量
     * 
     * @return
     * @throws SQLException
     */
    @Override
    public int countAll() {
        return roleMenuDao.countAll();
    }

    /**
     * 查询所有
     * 
     * @return
     * @throws SQLException
     */
    @Override
    public List<RoleMenu> listAll() {
        return roleMenuDao.listAll();
    }

    /**
     * 根据对象统计数量
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int countByDto(RoleMenu roleMenu) {
        return roleMenuDao.countByDto(roleMenu);
    }

    /**
     * 根据对象查询
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public List<RoleMenu> listByDto(RoleMenu roleMenu) {
        startPage(roleMenu);
        return roleMenuDao.listByDto(roleMenu);
    }

    /**
     * 通过menuId删除(物理删除)
     * 
     * @param menuId
     * @return
     * @throws SQLException
     */
    @Override
    public int deleteByMenuId(Integer menuId) {
        return roleMenuDao.deleteByMenuId(menuId);
    }

    /**
     * 通过menuId列表删除(物理删除)
     * 
     * @param menuIds
     * @return
     * @throws SQLException
     */
    @Override
    public int deleteByMenuIdList(ArrayList<Integer> menuIds) {
        return roleMenuDao.deleteByMenuIdList(menuIds);
    }

    /**
     * 通过menuId更新(全部更新)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int updateByMenuId(RoleMenu roleMenu) {
        return roleMenuDao.updateByMenuId(roleMenu);
    }

    /**
     * 通过menuId列表更新(全部更新)(更新内容相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int updateStaticByMenuIdList(RoleMenu roleMenu) {
        return roleMenuDao.updateStaticByMenuIdList(roleMenu);
    }

    /**
     * 通过menuId列表更新(全部更新)(更新内容不相同)
     * 
     * @param roleMenus
     * @return
     * @throws SQLException
     */
    @Override
    public int updateChangeByMenuIdList(ArrayList<RoleMenu> roleMenus) {
        return roleMenuDao.updateChangeByMenuIdList(roleMenus);
    }

    /**
     * 通过menuId更新(局部更新)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int updatePartialByMenuId(RoleMenu roleMenu) {
        return roleMenuDao.updatePartialByMenuId(roleMenu);
    }

    /**
     * 通过menuId列表更新(局部更新)(更新内容相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public int updateStaticPartialByMenuIdList(RoleMenu roleMenu) {
        return roleMenuDao.updateStaticPartialByMenuIdList(roleMenu);
    }

    /**
     * 通过menuId列表更新(局部更新)(更新内容不相同)
     * 
     * @param roleMenus
     * @return
     * @throws SQLException
     */
    @Override
    public int updateChangePartialByMenuIdList(ArrayList<RoleMenu> roleMenus) {
        return roleMenuDao.updateChangePartialByMenuIdList(roleMenus);
    }

    /**
     * 通过menuId查询
     * 
     * @param menuId
     * @return
     * @throws SQLException
     */
    @Override
    public RoleMenu findByMenuId(Integer menuId) {
        return roleMenuDao.findByMenuId(menuId);
    }

    /**
     * 通过menuId列表查询
     * 
     * @param menuIds
     * @return
     * @throws SQLException
     */
    @Override
    public ArrayList<RoleMenu> findByMenuIdList(ArrayList<Integer> menuIds) {
        return roleMenuDao.findByMenuIdList(menuIds);
    }

    /**
     * 通过对象查询menuId列表
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    @Override
    public ArrayList<Integer> findMenuIdByDto(RoleMenu roleMenu) {
        return roleMenuDao.findMenuIdByDto(roleMenu);
    }

    /**
     * 清空数据(物理清空)
     * 
     * @throws SQLException
     */
    @Override
    public void clear() {
        roleMenuDao.clear();
    }

    /**
     * 查询菜单是否存在角色
     *
     * @param id 菜单ID
     * @return 结果 true 存在 false 不存在
     */
    @Override
    public int checkMenuExistRole(Integer id) {
        return roleMenuDao.checkMenuExistRole(id);
    }

    /**
     * 通过roleId删除
     * 
     * @param roleId
     * @return
     */
    @Override
    public int deleteByRoleId(Integer roleId) {
        return roleMenuDao.deleteByRoleId(roleId);
    }

}